<template>
  <span>{{innerValue}}</span>
</template>

<script>
// import { filterDictTextByCache } from '@/components/dict/ZDictSelectUtil'
export default {
  props: {
    value: [String, Number],
    params: Object,
    renderOptions: Object,
    cellProps: Object,
    enhanced: {
      type: Object,
      default: () => {}
    }
  },
  data() {
    return {
      innerValue: '',
      defaultEnhanced: { // 增强 目前只实现编辑组件与默认组件的翻译
        // 【翻译增强】可以实现例如select组件保存的value，但是span模式下需要显示成text
        translate: {
        // 是否启用翻译
          enabled: true,
          /**
           * 【翻译处理方法】如果handler留空，则使用默认的翻译方法
           * (this指向当前组件)
           *
           * @param value 需要翻译的值
           * @returns{*} 返回翻译后的数据
           */
          handler(value) {
            // 默认翻译方法
            // return filterDictTextByCache(this.cellProps.dictCode, value)
            return value
          }
        }
      }
    }
  },
  created() {
    if (this.enhanced) {
      Object.keys(this.enhanced).forEach(key => {
        this.defaultEnhanced[key] = this.enhanced[key]
      })
    }
    this.unwatch = this.$watch(
      'value',
      async function(newVal, oldVal) {
        let res = newVal
        // 判断是否启用翻译
        if (this.defaultEnhanced.translate.enabled) {
          res = await this.defaultEnhanced.translate.handler.call(this, res)
        }
        this.innerValue = res
      },
      { immediate: true }
    )
  },
  beforeDestroy() {
    this.unwatch()
  }
}
</script>
